
<html><head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta content="text/javascript" http-equiv="content-script-type">
<title>system.collections.Stack</title>
<link rel="stylesheet" type="text/css" href="candydoc/style.css">
<!--[if lt IE 7]><link rel="stylesheet" type="text/css" href="candydoc/ie56hack.css"><![endif]-->
<script language="JavaScript" src="candydoc/util.js" type="text/javascript"></script>
<script language="JavaScript" src="candydoc/tree.js" type="text/javascript"></script>
<script language="JavaScript" src="candydoc/explorer.js" type="text/javascript"></script>
</head><body>
<div id="tabarea"></div><div id="explorerclient"></div>
<div id="content"><script>explorer.initialize("system.collections.Stack");</script>
	<table class="content">
		<tr><td id="docbody"><h1>system.collections.Stack</h1><!-- Generated by Ddoc from F:\MyWork\phoenix\source\system\collections\Stack.d -->
该模块实现了一个泛型
<span class="currsymbol">Stack</span>
<script>explorer.outline.addDecl('Stack');</script>


<br><br>
<b>License:</b><br>
BSD
<br><br>
<b>Authors:</b><br>
Lucifer (786325481@QQ.com)
<br><br>


<script>explorer.outline.incSymbolLevel();</script>
<dl>
<script>explorer.outline.writeEnabled = true;</script>
<dt><span class="decl">class 
<span class="currsymbol">Stack</span>
<script>explorer.outline.addDecl('Stack');</script>

(T): ICollection!(T), IEnumerable!(T);
</span></dt>
<script>explorer.outline.writeEnabled = false;</script>


<dd>表示泛型版后进先出 (LIFO) 集合。
 
<br><br>


<script>explorer.outline.incSymbolLevel();</script>
<dl>
<script>explorer.outline.writeEnabled = true;</script>
<dt><span class="decl">this();
</span></dt>
<script>explorer.outline.writeEnabled = false;</script>


<dd>初始化 Stack(T) 类的新实例，该实例为空并且具有默认初始容量。
<br><br>
<b>Comments:</b><br>
Stack(T)的容量是 Stack(T) 可以容纳的元素数。
           当向 Stack(T) 中添加元素时，将通过重新分配内部数组来根据需要自动增大容量。
           如果可以估计集合的大小，那么当指定初始容量后，将无需在向 Stack(T) 中添加元素时执行大量的大小调整操作。
           可通过调用 trimExcess 来减少容量。
           此构造函数的运算复杂度是 O(1)。
           默认初始容量是16。
     
<br><br>

</dd>

<script>explorer.outline.writeEnabled = true;</script>
<dt><span class="decl">this(int initialCapacity);
</span></dt>
<script>explorer.outline.writeEnabled = false;</script>


<dd>初始化 Stack(T) 类的新实例，该实例为空并且具有指定的初始容量。
<br><br>
<b>Params:</b><br>
<table><tr>
<td nowrap valign="top" style="padding-right: 8px">initialCapacity</td>

               
<td>Stack(T) 可包含的初始元素数。</td></tr>
</table><br>
<b>Comments:</b><br>
ditto。
     
<br><br>

</dd>

<script>explorer.outline.writeEnabled = true;</script>
<dt><span class="decl">this(IEnumerable!(T) collection);
</span></dt>
<script>explorer.outline.writeEnabled = false;</script>


<dd>初始化 Stack(T) 类的新实例，该实例包含从指定的集合中复制的元素并且其容量足以容纳所复制的元素数。
     
<br><br>

</dd>

<script>explorer.outline.writeEnabled = true;</script>
<dt><span class="decl">bool 
<span class="currsymbol">isEmpty</span>
<script>explorer.outline.addDecl('isEmpty');</script>

();
</span></dt>
<script>explorer.outline.writeEnabled = false;</script>


<dd>查看 Stack(T) 是否为空。
     
<br><br>

</dd>

<script>explorer.outline.writeEnabled = true;</script>
<dt><span class="decl">int 
<span class="currsymbol">count</span>
<script>explorer.outline.addDecl('count');</script>

();
</span></dt>
<script>explorer.outline.writeEnabled = false;</script>


<dd>返回 Stack(T) 的元素数。
     
<br><br>

</dd>

<script>explorer.outline.writeEnabled = true;</script>
<dt><span class="decl">bool 
<span class="currsymbol">isReadOnly</span>
<script>explorer.outline.addDecl('isReadOnly');</script>

();
</span></dt>
<script>explorer.outline.writeEnabled = false;</script>


<dd>查看该集合是否只读。
     
<br><br>

</dd>

<script>explorer.outline.writeEnabled = true;</script>
<dt><span class="decl">bool 
<span class="currsymbol">add</span>
<script>explorer.outline.addDecl('add');</script>

(T <span class="funcparam">item</span>);
</span></dt>
<script>explorer.outline.writeEnabled = false;</script>


<dd><b>Throws:</b><br>
NotSupportedException.
     
<br><br>

</dd>

<script>explorer.outline.writeEnabled = true;</script>
<dt><span class="decl">bool 
<span class="currsymbol">remove</span>
<script>explorer.outline.addDecl('remove');</script>

(T <span class="funcparam">item</span>);
</span></dt>
<script>explorer.outline.writeEnabled = false;</script>


<dd><b>Throws:</b><br>
NotSupportedException.
     
<br><br>

</dd>

<script>explorer.outline.writeEnabled = true;</script>
<dt><span class="decl">void 
<span class="currsymbol">clear</span>
<script>explorer.outline.addDecl('clear');</script>

();
</span></dt>
<script>explorer.outline.writeEnabled = false;</script>


<dd>从 Stack(T) 中移除所有对象。
<br><br>
<b>Comments:</b><br>
count 被设置为零，并且集合中的元素对其他对象的引用也被释放。
           容量保持不变。若要重置 Stack(T) 的容量，请调用 trimExcess。
           此方法的运算复杂度是 O(n)，其中 n 是 count。
     
<br><br>

</dd>

<script>explorer.outline.writeEnabled = true;</script>
<dt><span class="decl">bool 
<span class="currsymbol">contains</span>
<script>explorer.outline.addDecl('contains');</script>

(T <span class="funcparam">item</span>);
</span></dt>
<script>explorer.outline.writeEnabled = false;</script>


<dd>确定某元素是否在 Stack(T) 中。
<br><br>
<b>Params:</b><br>
<table><tr>
<td nowrap valign="top" style="padding-right: 8px">T <span class="funcparam">item</span></td>

               
<td>要在 Stack(T) 中定位的对象。对于引用类型，该值可以为 <b>null</b>。</td></tr>
</table><br>
<b>Returns:</b><br>
如果在 Stack(T) 中找到 <span class="funcparam">item</span>，则为 <b>true</b>；否则为 <b>false</b>。
<br><br>
<b>Comments:</b><br>
此方法使用用于 T（列表中的值的类型）的默认相等比较器 DefaultEqualityComparer(T).getInstance() 来确定相等性。
           此方法执行线性搜索；因此，此方法的运算复杂度是 O(n)，其中 n 为 count。
<br><br>

     
<br><br>

</dd>

<script>explorer.outline.writeEnabled = true;</script>
<dt><span class="decl">void 
<span class="currsymbol">toArray</span>
<script>explorer.outline.addDecl('toArray');</script>

(T[] <span class="funcparam">array</span>);
</span></dt>
<script>explorer.outline.writeEnabled = false;</script>


<dd>将 Stack(T) 复制到现有一维 Array 中。
<br><br>
<b>Comments:</b><br>
按后进先出的顺序将元素复制到数组，类似于连续调用 Pop 所返回的元素的顺序。
           此方法的运算复杂度是 O(n)，其中 n 是 count。
     
<br><br>

</dd>

<script>explorer.outline.writeEnabled = true;</script>
<dt><span class="decl">T 
<span class="currsymbol">peek</span>
<script>explorer.outline.addDecl('peek');</script>

();
</span></dt>
<script>explorer.outline.writeEnabled = false;</script>


<dd>返回位于 Stack(T) 顶部的对象但不将其移除。
<br><br>
<b>Throws:</b><br>
InvalidOperationException，当堆栈为空时。
<br><br>
<b>Comments:</b><br>
此方法类似于 Pop 方法，但 Peek 不修改 Stack(T)。
           如果类型 T 是引用类型，则可以在需要时将 <b>null</b> 作为占位符推入到 Stack(T) 中。
           此方法的运算复杂度是 O(1)。
     
<br><br>

</dd>

<script>explorer.outline.writeEnabled = true;</script>
<dt><span class="decl">T 
<span class="currsymbol">pop</span>
<script>explorer.outline.addDecl('pop');</script>

();
</span></dt>
<script>explorer.outline.writeEnabled = false;</script>


<dd>移除并返回位于 Stack(T) 顶部的对象。
<br><br>
<b>Returns:</b><br>
从 Stack(T) 的顶部移除的对象。
<br><br>
<b>Throws:</b><br>
InvalidOperationException，当堆栈为空时。
     
<br><br>

</dd>

<script>explorer.outline.writeEnabled = true;</script>
<dt><span class="decl">void 
<span class="currsymbol">push</span>
<script>explorer.outline.addDecl('push');</script>

(T <span class="funcparam">item</span>);
</span></dt>
<script>explorer.outline.writeEnabled = false;</script>


<dd>将对象插入 Stack(T) 的顶部。
<br><br>
<b>Params:</b><br>
<table><tr>
<td nowrap valign="top" style="padding-right: 8px">T <span class="funcparam">item</span></td>

               
<td>要推入到 Stack(T) 中的对象。对于引用类型，该值可以为 <b>null</b>。</td></tr>
</table><br>
<b>Comments:</b><br>
Stack(T) 作为数组来实现。
           如果 count 已经等于容量，则会通过自动重新分配内部数组使 Stack(T) 的容量增加，并且在添加新元素之前将现有元素复制到新数组中。
           如果类型 T 是引用类型，则可以在需要时将 <b>null</b> 作为占位符推入到 Stack(T) 中。它占用堆栈中的一个槽，并且被当作任意对象一样处理。
           如果 count 小于堆栈的容量，则 Push 的运算复杂度是 O(1)。如果需要增加容量以容纳新元素，则 Push 的运算复杂度成为 O(n)，其中 n 为 count。
     
<br><br>

</dd>

<script>explorer.outline.writeEnabled = true;</script>
<dt><span class="decl">void 
<span class="currsymbol">trimExcess</span>
<script>explorer.outline.addDecl('trimExcess');</script>

();
</span></dt>
<script>explorer.outline.writeEnabled = false;</script>


<dd>如果元素数小于当前容量的 90%，将容量设置为 Stack(T) 中的实际元素数。
<br><br>
<b>Comments:</b><br>
如果不向集合中添加新元素，则此方法可用于最小化集合的内存开销。但是，重新分配和复制较大 Stack(T) 的开销可能
           很大，因此，如果该列表大于容量的 90%，则 
<span class="currsymbol">trimExcess</span>
<script>explorer.outline.addDecl('trimExcess');</script>

 方法将不执行任何操作。这样可以避免为获得相对较少的
           收益而产生大量重新分配开销。
           此方法的运算复杂度是 O(n)，其中 n 是 count。
     
<br><br>

</dd>

<script>explorer.outline.writeEnabled = true;</script>
<dt><span class="decl">class 
<span class="currsymbol">Enumerator</span>
<script>explorer.outline.addDecl('Enumerator');</script>

: IEnumerator!(T);
</span></dt>
<script>explorer.outline.writeEnabled = false;</script>


<dd><b>Throws:</b><br>
InvalidOperationException，当在遍历对象时修改了集合。
     
<br><br>

</dd>
</dl>
<script>explorer.outline.decSymbolLevel();</script>


</dd>
</dl>
<script>explorer.outline.decSymbolLevel();</script>


</td></tr>
		<tr><td id="docfooter">
			Page was generated with
			<img src="candydoc/img/candydoc.gif" style="vertical-align:middle; position:relative; top:-1px">
			on Sat Nov 29 22:33:12 2008

		</td></tr>
	</table>
</div>
<script>
	explorer.packageExplorer.addModule("platform.PAL");
	explorer.packageExplorer.addModule("platform.windows.Core");
	explorer.packageExplorer.addModule("platform.linux.Core");
	explorer.packageExplorer.addModule("system.Array");
	explorer.packageExplorer.addModule("system.BitArray");
	explorer.packageExplorer.addModule("system.Environment");
	explorer.packageExplorer.addModule("system.Event");
	explorer.packageExplorer.addModule("system.Exception");
	explorer.packageExplorer.addModule("system.Hash");
	explorer.packageExplorer.addModule("system.IntPtr");
	explorer.packageExplorer.addModule("system.Random");
	explorer.packageExplorer.addModule("system.Traits");
	explorer.packageExplorer.addModule("system.TypeTuple");
	explorer.packageExplorer.addModule("system.math.IEEE");
	explorer.packageExplorer.addModule("system.math.Math");
	explorer.packageExplorer.addModule("system.runtime.c.complex");
	explorer.packageExplorer.addModule("system.runtime.c.config");
	explorer.packageExplorer.addModule("system.runtime.c.ctype");
	explorer.packageExplorer.addModule("system.runtime.c.errno");
	explorer.packageExplorer.addModule("system.runtime.c.fenv");
	explorer.packageExplorer.addModule("system.runtime.c.inttypes");
	explorer.packageExplorer.addModule("system.runtime.c.limits");
	explorer.packageExplorer.addModule("system.runtime.c.locale");
	explorer.packageExplorer.addModule("system.runtime.c.math");
	explorer.packageExplorer.addModule("system.runtime.c.signal");
	explorer.packageExplorer.addModule("system.runtime.c.stdarg");
	explorer.packageExplorer.addModule("system.runtime.c.stddef");
	explorer.packageExplorer.addModule("system.runtime.c.stdint");
	explorer.packageExplorer.addModule("system.runtime.c.stdio");
	explorer.packageExplorer.addModule("system.runtime.c.stdlib");
	explorer.packageExplorer.addModule("system.runtime.c.string");
	explorer.packageExplorer.addModule("system.runtime.c.time");
	explorer.packageExplorer.addModule("system.runtime.c.wctype");
	explorer.packageExplorer.addModule("system.text.UTF");
	explorer.packageExplorer.addModule("system.threading.Atomic");
	explorer.packageExplorer.addModule("system.threading.ThreadUtility");
	explorer.packageExplorer.addModule("system.threading.synchronization.SpinWait");
	explorer.packageExplorer.addModule("system.collections.ArrayList");
	explorer.packageExplorer.addModule("system.collections.Comparer");
	explorer.packageExplorer.addModule("system.collections.Deque");
	explorer.packageExplorer.addModule("system.collections.EqualityComparer");
	explorer.packageExplorer.addModule("system.collections.Exception");
	explorer.packageExplorer.addModule("system.collections.HashMap");
	explorer.packageExplorer.addModule("system.collections.HashSet");
	explorer.packageExplorer.addModule("system.collections.ICollection");
	explorer.packageExplorer.addModule("system.collections.IComparer");
	explorer.packageExplorer.addModule("system.collections.IDeque");
	explorer.packageExplorer.addModule("system.collections.IEnumerable");
	explorer.packageExplorer.addModule("system.collections.IEnumerator");
	explorer.packageExplorer.addModule("system.collections.IEqualityComparer");
	explorer.packageExplorer.addModule("system.collections.IList");
	explorer.packageExplorer.addModule("system.collections.IMap");
	explorer.packageExplorer.addModule("system.collections.IQueue");
	explorer.packageExplorer.addModule("system.collections.LinkedList");
	explorer.packageExplorer.addModule("system.collections.Pair");
	explorer.packageExplorer.addModule("system.collections.PrimeHelper");
	explorer.packageExplorer.addModule("system.collections.PriorityQueue");
	explorer.packageExplorer.addModule("system.collections.Queue");
	explorer.packageExplorer.addModule("system.collections.RBTree");
	explorer.packageExplorer.addModule("system.collections.Stack");
	explorer.packageExplorer.addModule("system.collections.TreeMap");
	explorer.packageExplorer.addModule("system.collections.TreeSet");
	explorer.packageExplorer.addModule("system.collections.objectmodel.ListCollection");
	explorer.packageExplorer.addModule("system.collections.objectmodel.ReadOnlyListCollection");</script>
</body></html>


